﻿using Gnivc.CarDealership.Api.Domain.Attributes;
using Gnivc.CarDealership.Api.Domain.Enums;
using System.Reflection;

namespace Gnivc.CarDealership.Api.Domain.Extensions;

public static class EnumExtensions
{
    public static string ToAttributeString(this EngineType value)
    {
        Type type = value.GetType();
        string name = Enum.GetName(type, value);

        FieldInfo field = type.GetField(name);

        if (field == null || !type.IsEnum)
            throw new InvalidOperationException("Атрибут применяется только к перечислениям");

        var attr = field.GetCustomAttribute<EnumToStringAttribute>();

        return attr?.Value ?? value.ToString();
    }
}
